#include <iostream>
#include <vector>
#include <unordered_map>

using namespace std;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr); // 加速输入输出

    int T;
    cin >> T;
    while (T--) {
        int N, M;
        cin >> N >> M;
        vector<int> A(N);
        for (int i = 0; i < N; ++i) {
            cin >> A[i];
        }

        unordered_map<int, int> count;
        count[0] = 1; // 初始余数0出现1次
        long long current_sum = 0;
        long long ans = 0;
        for (int num : A) {
            current_sum += num;
            int r = current_sum % M; // 计算余数，确保非负
            ans += count[r];       // 累加相同余数的出现次数
            count[r]++;            // 更新余数计数
        }
        cout << ans << '\n';
    }

    return 0;
}